package main

import (
	"fmt"
)

func main() {
	// 定义一个可以存放3个int的的管道,如果存放4个数据会报错,取不到数据也会报错
	// 默认双向（可读可写
	var intChan chan int = make(chan int, 3)

	// 只写
	// var intChan chan<- int = make(chan int, 3)
	// 只读
	// var intChan <-chan  int = make(chan int, 3)

	// 存放数据
	intChan <- 10
	
	num := 20
	intChan <- num

	// 输出管道长度
	fmt.Printf("管道的实际长度: %v, 管道的容量是: %v \n", len(intChan), cap(intChan))

	// 读取数据
	num1 := <- intChan
	fmt.Println(num1)
	num2 := <- intChan
	fmt.Println(num2)

	// 关闭管道，关闭后可以读取数据但无法写入数据
	close(intChan)
}